If the popover fails to be shown, it would internally undo visible
and mapped state. If we just proceed as normal, the widget enters
in inconsistent state, and a grab remains issued on the invisible
widget, preventing further input from the input device.
return layout;
}
-static void
+static gboolean
present_popup (GtkPopover *popover)
{
GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
MAX (req.width, 1),
MAX (req.height, 1),
layout))
- update_popover_layout (popover, layout);
+ {
+ update_popover_layout (popover, layout);
+ return TRUE;
+ }
+
+ return FALSE;
}
static void
_gtk_widget_set_visible_flag (widget, TRUE);
gtk_widget_realize (widget);
- present_popup (popover);
+ if (!present_popup (popover))
+ return;
+
gtk_widget_map (widget);
if (priv->autohide)